package com.zyj.thread;

import java.util.concurrent.TimeUnit;

public class ThreadExceptionHandlerTest {

    /**
     * 设置线程异常处理（分为全局、局部）
     *      1、setDefaultUncaughtExceptionHandler
     *      2、setUncaughtExceptionHandler
     *
     * 当线程抛出异常时，可进行捕获并处理
     */
    public static void main(String[] args){

        // 设置全局异常回调，用于捕获并处理线程异常
        Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
            System.out.println(t.getName() + "->occur exception");
            e.printStackTrace();
        });

        Thread myThread = new Thread(() -> {
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // 这里将出现未检查异常
            System.out.println(1 / 0);
        }, "MyThread");

        myThread.start();

    }

}
